#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "server.h"
#include <QTimer>
#include "qcustomplot.h"
#include <QDateTime>
#include <QFont>
#include <QBrush>
#include <QColor>
#include <QAbstractSlider>
#include <QtMath>
#include <QFileDialog>
#include <QFile>
//#include "tcpthread.h"

#define REPLOT_TIMER_INTERVAL 15    //replot图像刷新间隔时间
#define DATA_ADD_INTERVAL 8         //添加一次数据到customplot上的时间间隔
#define DATA_TEXT_INTERVAL 15       //文本框上接收到数据时，显示间隔时间

#define ONCE_READ_NUM 10            //从缓冲区中一次读取数据的个数
#define XAXISMIN 3000               //坐标系上最少显示的点
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:

private slots:
    void dataTextShow();
    void dataChart();
    void replotshow();
    void connectState(QString clientIP,int tempSockDesc); //连接状态显示
    void disconnectState(int m_sockDesc);
    void portPlotInit(QCustomPlot *customplot);           //绘图初始化函数

    void on_btn_Listen_clicked();
    void on_btn_ChartShow_clicked();
    void on_btn_DataShow_clicked();  
    void on_slider_X_sliderMoved(int position);

    void on_btn_SetChart_clicked();

    void on_pushButton_8_clicked();

    void on_btn_SaveData_clicked();

    void on_btn_Clear_clicked();

    void on_btn_Write_clicked();

    void on_btn_Search_clicked();

    void on_btn_SendClear_clicked();

public slots:


signals:
    void portMes(int port);
    void serverDisconnect();
    void sentData(const QByteArray &dataToWrite);

private:
    Ui::Widget *ui;
    int port;       //监听网络端口号
    Server *m_server;
    float yAxismin;//y轴最小值
    float yAxismax;//y轴最大值
    double percent;//滑块实时位置信号
    int connectSockDesc;//套接字
    QMutex mutex;
    QTimer *plotShowTimer;  //replot定时器
    QTimer *addDataTimer;   //数据添加定时器
    QTimer *dataTextTimer;  //数据文本显示定时器
};
#endif
